package cn.com.generaldata.os.ws.intf;

import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebService;

import cn.com.generaldata.os.vo.AuthorityVO;
import cn.com.generaldata.os.vo.FuncVO;
import cn.com.generaldata.os.vo.ResultVO;
import cn.com.generaldata.os.vo.UserVO;

@WebService
public interface UserWSInterface {

	/**
	 * @function查找角色的权限功能
	 * @param vAuthor
	 * @return
	 */
	@WebMethod
	List<FuncVO> getFuncsByAuthor(String aid);

	/**
	 * @function新登录
	 * @param vAuthor
	 * @return
	 */
	@WebMethod
	UserVO loginNew(String loginName,String access);

	/**
	 * @function删除权限角色
	 * @param vAuthor
	 * @return
	 */
	@WebMethod
	void deleteAuthor(String id);

	/**
	 * @function权限是否被使用
	 * @param vAuthor
	 * @return
	 */
	@WebMethod
	boolean findUserByAuthor(String aid);

	/**
	 * @function新增权限角色
	 * @param vAuthor
	 * @return
	 */
	@WebMethod
	void addAuthor(AuthorityVO vAuthor);

	/**
	 * @function查找权限角色
	 * @param name
	 * @return
	 */
	@WebMethod
	ResultVO<AuthorityVO> queryAuthority(String name, Integer pageNum);

	/**
	 * @function 创建用户
	 * @param user
	 * @return 主键
	 */
	@WebMethod
	String createUser(UserVO user);

	/**
	 * @function 所有权限功能
	 */
	@WebMethod
	List<FuncVO> getAllFuncs();

	/**
	 * @function 更新用户
	 * @param user
	 * @return 更新后的用户
	 */
	@WebMethod
	UserVO modifyUser(UserVO user);

	/**
	 * @function 根据主键查询用户
	 * @param id
	 * @return
	 */
	@WebMethod
	UserVO queryUserById(String id);

	/**
	 * @function 根据用户名查询用户（用于登录）
	 * @param loginName
	 * @param password
	 * @return
	 */
	@WebMethod
	UserVO login(String loginName, String password);

	/**
	 * @function 根据查询条件查询用户
	 * @param loginName 查询条件：用户名
	 * @param roleId 查询条件：用户类型ID
	 * @param pageNum 页码
	 * @return
	 */
	@WebMethod
	ResultVO<UserVO> queryUsers(String loginName, String roleId, String unitName, Integer pageNum);

	@WebMethod
	ResultVO<UserVO> queryUsersByArea(String loginName, String roleId, String unitName, String areaId, Integer pageNum,
			String unitNo);

	/**
	 * @function 根据查询条件查询添加或修改用户，没有和外网同步的用户。标志为“0”
	 * @param loginName 查询条件：用户名
	 * @param roleId 查询条件：用户类型ID
	 * @param pageNum 页码
	 * @return
	 */
	@WebMethod
	ResultVO<UserVO> queryExportUsers(String loginName, String roleId, String unitName, Integer pageNum);

	/**
	 * @function 查询所有的企业用户
	 * @return
	 */
	@WebMethod
	List<UserVO> queryAllEnterpriseUsers();

	// 自加，根据地区id查找对应企业用户
	@WebMethod
	List<UserVO> queryAreaEnterpriseUsers(String userAreaId);

	// 自加，根据地区id查找对应省区海洋局用户
	@WebMethod
	List<UserVO> queryAreaOceanUsers(String userAreaId);

	// 自加
	@WebMethod
	List<UserVO> queryAllAreaOcean();

	/**
	 * @function 根据行业查询该行业的所有企业用户
	 * @param industryId
	 * @return
	 */
	@WebMethod
	List<UserVO> queryAllUsersByIndustryId(String industryId);

	/**
	 * @function 根据行业查询该行业的所有企业用户
	 * @param industryId
	 * @return
	 */
	@WebMethod
	List<UserVO> queryUsersByIndustryId(String industryId, String areaId);

	/**
	 * @function 删除用户
	 * @param ids
	 */
	@WebMethod
	void removeUsers(List<String> ids);

	/**
	 * @function 修改密码
	 * @param loginName
	 * @param oldPwd
	 * @param newPwd
	 */
	@WebMethod
	void changePassword(String loginName, String oldPwd, String newPwd);

	/**
	 * @function 重置密码
	 * @param id
	 */
	@WebMethod
	void resetPassword(String id);

	/**
	 * @function 改变当前用户对应的行业分类
	 * @param user
	 */
	@WebMethod
	UserVO modifyUserIndustryIds(UserVO user);

	/**
	 * @function 改变当前用户对应的企业行业分类
	 * @param user
	 */
	@WebMethod
	UserVO addEnterpriseIndustryIds(UserVO user);

	/**
	 * @function 删除当前用户对应的行业分类
	 * @param user
	 */
	@WebMethod
	UserVO deleteUserIndustryIds(UserVO user, String industryId);

	/**
	 * @function 删除当前用户对应的企业行业分类
	 * @param user
	 */
	@WebMethod
	UserVO deleteEnterpriseIndustryIds(UserVO user, String industryId);

	@WebMethod
	ResultVO<UserVO> queryUsersByParent(String loginName, String roleId, String unitName, String areaId, Integer pageNum);
}
